﻿#include <iostream>
#include <vector>
#include <algorithm>/*max函数所在头文件*/
#include <cstring>
#include <climits>

#define quickio ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);

using namespace std;

////k皇后
//
//const int N = 2e4 + 5;
//const int M = 2e4 + 5;
//int n, m, k;
//int dui[N+M];
//int row[N];
//int col[M];
//int fandui[2*(M + N)];
//
//int num = 0;
//
//void check()
//{
//	int i, j;
//	for (i = 1; i <= n; i++)
//	{
//		if (row[i] == 0)
//		{
//			for (j = 1; j <= m; j++)
//			{
//				if (col[j] == 0 && dui[i+j]==0 && fandui[i-j+(n+m)]==0)
//				{
//					num++;
//				}
//			}
//		}
//	}
//}
//
//void change(int x, int y)
//{
//	int i, j;
//	row[x] = 1;
//	col[y] = 1;
//	dui[x + y] = 1;
//	fandui[(x - y) +(n+m)] = 1;
//}
//
//int main()
//{
//	quickio;
//	cin >> n >> m >> k;
//
//	int x, y;
//	while (k--)
//	{
//		cin >> x >> y;
//		
//		change(x, y);
//	}
//	check();
//	cout << num << endl;
//	return 0;
//}
//

//const int N = 2e4 + 5;
//const int M = 2e4 + 5;
//int n, m, k;
//int book[N][M];
////int dui[N+M];
////int row[N];
////int col[M];
////int fandui[M + N];
//
//int num = 0;
//
//void check()
//{
//	int i, j;
//	for (i = 1; i <= n; i++)
//	{
//		if (book[i][1])
//			continue;
//		for (j = 1; j <= m; j++)
//		{
//			if (book[i][j])
//				continue;
//			num++;
//		}
//	}
//}
//
//void change(int x, int y)
//{
//	int i, j;
//	if (book[1][y] == 0)
//	{
//		for (i = 1; i <= n; i++)
//		{
//			book[i][y] = 1;
//		}
//	}
//	if (book[x][1] == 0)
//	{
//		for (i = 1; i <= m; i++)
//		{
//			book[x][i] = 1;
//		}
//	}
//
//	for (i = 1; i <= n; i++)
//	{
//		for (j = 1; j <= m; j++)
//		{
//			if (i + j == x + y || i - j == x - y)
//				book[i][j] = 1;
//		}
//	}
//}
//
//int main()
//{
//	quickio;
//	cin >> n >> m >> k;
//	//num = n * m;
//
//	int x, y;
//	while (k--)
//	{
//		cin >> x >> y;
//		book[x][y] = 1;
//		change(x, y);
//	}
//	check();
//	cout << num << endl;
//	return 0;
//}


//B
//const int N = 5e6 + 5;
//int a[N];
//int head[N];
//
//int main()
//{
//	int n, p;
//	cin >> n >> p;
//
//	int i;
//	for (i = 0; i < n; i++)
//	{
//		cin >> a[i];
//	}
//	return 0;
//}


//E
//int main()
//{
//	quickio;
//	int t;
//	cin >> t;
//
//	int i;
//	string s;
//	while (t--)
//	{
//		cin >> s;
//		if (s.size() != 3)
//		{
//			cout << "NO" << endl;
//			continue;
//		}
//
//		if (s == "abc" || s == "acb" || s == "bac" || s == "cba")
//			cout << "YES" << endl;
//		else
//			cout << "NO" << endl;
//	}
//	return 0;
//}


								//H

//const int N = 1e8;
//int prime[N], book[N], h;
//int flag = 0;
//void isprime(int max)
//{
//	int i = 2;
//	for (i = 2; i <= max; i++)
//	{
//		if (book[i] == 0)
//		{
//			prime[h++] = i;
//
//			int j;
//			for (j = 0; j < h; j++)
//			{
//				if (i * prime[j] == max)
//				{
//					cout << i << endl;
//					flag = 1;
//					return;
//				}
//				if (i * prime[j] > max)
//					break;
//				book[i * prime[j]] = 1;
//				//if (i % prime[j] == 0)
//				//	break;
//			}
//		}
//	}
//}
//
//int main()
//{
//	int n;
//	cin >> n;
//	int i;
//	book[0] = 1;
//	book[1] = 1;
//	isprime(n);
//	if (flag == 1)
//		return 0;
//	
//	int j;
//	for (j = h - 1; j >= 0; j--)
//	{
//		int x = n % prime[j];
//		if (x == 0 && book[n / prime[j]] == 0)
//		{
//			cout << prime[j] << endl;
//			return 0;
//		}
//	}
//	return 0;
//}

//#include <unordered_map>
//
//const int N = 1e8;
//int prime[N]/*, book[N],*/, h;
//int flag = 0;
//unordered_map<int, int>map;
//void isprime(int max)
//{
//	int i = 2;
//	for (i = 2; i <= max; i++)
//	{
//		if (map.find(i) == map.end())
//		{
//			prime[h++] = i;
//
//			int j;
//			for (j = 0; j < h; j++)
//			{
//				if (i * prime[j] == max)
//				{
//					cout << i << endl;
//					flag = 1;
//					return;
//				}
//				if (i * prime[j] > max)
//					break;
//				//map[i * prime[j]] = 1;
//				map.insert({ i * prime[j],1 });
//				//if (i % prime[j] == 0)
//				//	break;
//			}
//		}
//	}
//}
//
//int main()
//{
//	int n;
//	cin >> n;
//	int i;
//	map.insert({0,1});
//	map.insert({ 1,1 });
//	isprime(n);
//	if (flag == 1)
//		return 0;
//
//	int j;
//	//for (j = h - 1; j >= 0; j--)
//	//{
//	//	int x = n % prime[j];
//	//	if (x == 0 && map.find(n / prime[j]) == map.end())
//	//	{
//	//		cout << prime[j] << endl;
//	//		return 0;
//	//	}
//	//}
//
//	for (j = 0; j <= n; j++)
//	{
//		if (n % prime[j] == 0 && map.find(n / prime[j]) == map.end())
//		{
//			cout << n / prime[j] << endl;
//			return 0;
//		}
//	}
//
//	return 0;
//}
//

//I
//
//int main()
//{
//	int n;
//	cin >> n;
//
//	int a[10005] = { 0 };
//
//	int i, count = 0;
//	for (i = 0; i < n; i++)
//	{
//		cin >> a[i];
//	}
//
//	int pregap = a[1] - a[0];
//	int gap = a[2] - a[1];
//	for (i = 1; i < n - 1; i++)
//	{
//		gap = a[i + 1] - a[i];
//		if ((gap < 0 && pregap < 0) || (gap > 0 && pregap > 0) || (gap == 0 && pregap == 0))
//		{
//			;
//		}
//		else if ((gap > 0 && pregap < 0) || (gap > 0 && pregap == 0))
//		{
//			count++;
//			pregap = gap;
//			continue;
//		}
//
//		if ((gap > 0 && pregap < 0)|| (gap < 0 && pregap > 0)
//			|| (gap == 0 && pregap < 0)|| (gap == 0 && pregap > 0)
//			|| (gap > 0 && pregap == 0) || (gap < 0 && pregap == 0))
//			pregap = gap;
//
//	}
//	cout << count << endl;
//	return 0;
//}


//B
//const int N = 5e6 + 5;
//int head[N];
//int cnt;
//int a[N];
//
//struct E
//{
//	int to;
//	int wei;
//	int next;
//}EDGE[N];
//
//void add(int u, int v, int w)
//{
//	cnt++;
//	EDGE[cnt].to = v;
//	EDGE[cnt].next = head[u];
//	EDGE[cnt].wei = w;
//	head[u] = cnt;
//}
//int main()
//{
//	int n, p;
//	cin >> n >> p;
//
//	for (int i = 0; i < n; i++)
//	{
//		cin >> a[i];
//	}
//
//	int u, v, w;
//	for (int i = 0; i < p; i++)
//	{
//		cin >> u >> v >> w;
//	}
//		return 0;
//}

									/*B*/
//#include <climits>
//
//const int N = 5e6 + 5;
//long long a[N];
//
//int main()
//{
//	int n, p;
//	cin >> n >> p;
//
//	for (int i = 1; i <= n; i++)
//	{
//		cin >> a[i];
//	}
//
//	int u, v, w;
//	for (int i = 0; i < p; i++)
//	{
//		cin >> u >> v >> w;
//		if (u == v)
//			a[u]+=w;
//		else
//		{
//			for (int j = u; j <= v; j++)
//			{
//				a[j] += w;
//			}
//		}
//
//	}
//	sort(a, a+n);
//	cout << a[1] << endl;
//	return 0;
//}


//C
//int main()
//{
//	int t;
//	cin >> t;
//	int n, m, k;
//
//	while (t--)
//	{
//		cin >> n >> m >> k;
//		int b[1005] = { 0 }, c[1005] = { 0 };
//
//		int i;
//		for (i = 0; i < n; i++)
//		{
//			cin >> b[i];
//		}
//		sort(b, b + n);
//		int j;
//		int count = 0;
//		for (i = 0; i < m; i++)
//		{
//			cin >> c[i];
//			
//			
//				for (j = 0; j < n; j++)
//				{
//					if (b[j] + c[i] <= k)
//						count++;
//					else
//						break;
//				}
//			
//		}
//		cout << count << endl;
//	}
//	return 0;
//}

//考后：
//H


//#include <iostream>
//#include <vector>
//#include <algorithm>/*max函数所在头文件*/
//#include <cstring>
//#include <climits>
//#include <cmath>
//
//#define quickio ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
//
//using namespace std;
//int main()
//{
//    int n;
//    cin >> n;
//    int i;
//    for (i = 2; i <= sqrt(n); i++)
//    {
//        if (n % i == 0)
//        {
//            cout << n / i << endl;
//            return 0;
//        }
//    }
//    return 0;
//}
//
//
////P2367 语文成绩
////https://www.luogu.com.cn/problem/P2367
////差分数组
////差分数组是可以通过前缀和把原数组还原
////最开始的差分数组d：第一个元素不变，第i个差分元素= a[i]-a[i-1]
////最后进行完操作的原数组的最终答案：差分数组的前缀和
////对a的[l, r] + v =====   d[l]+v , d[r +1] - v;//如果r+1已经大于了n - 1，不用管
//
//const int N = 5e6 + 5;
//int d[N];//差分数组
//int a[N];
//
//int main()
//{
//	quickio;
//	int n, p;
//	cin >> n >> p;
//
//	int i;
//	for (i = 0; i < n; i++)
//	{
//		cin >> a[i];
//		if (i == 0)
//			d[i] = a[i];
//		else
//			d[i] = a[i] - a[i - 1];
//	}
//
//	int x, y, z;
//	for (i = 0; i< p; i++)
//	{
//		cin >> x >> y >> z;
//
//		d[x - 1] += z;
//		if (y  - 1 /*注意要转换为下标*/ + 1 < n)
//			d[y - 1 + 1] -= z;
//	}
//
//	for (i = 0; i < n; i++)
//	{
//		if (i > 0)
//			a[i] = a[i - 1] + d[i];
//		else
//			a[i] = d[i];
//	}
//
//	sort(a, a + n);
//	cout << a[0] << endl;
//	return 0;
//}
//
////P1317 低洼地
////https://www.luogu.com.cn/problem/P1317
//
//int main()
//{
//	int i;
//	int n;
//	cin >> n;
//	int a[10005] = { 0 };
//	int book = 0;
//	int count = 0;
//	for (i = 0; i < n; i++)
//	{
//		cin >> a[i];
//		if (i != 0 && a[i] - a[i - 1] < 0)
//			book = 1;
//		if (i != 0 && book == 1 && a[i] - a[i - 1] > 0)
//		{
//			count++;
//			book = 0;
//		}
//	}
//	cout << count << endl;
//	return 0;
//}

//P1866 编号
//https://www.luogu.com.cn/problem/P1866
//
//题解：https://www.luogu.com.cn/article/him54vew
//
//首先要利用一个数学原理：乘法原理大意如下：有两类元素，分别有m，n个，那么从两类里各取一个元素，共有mn种取法。
//先来看第1只兔子，很明显，这时有m1种方法。
//这时又来了一只兔子，根据乘法原理， 这时的取法数应为 第一只兔子可能的取值×第二只兔子可能的取值。 第一只兔子的取值共有​
//m1种，由于第一只已取了一个号，第二只不能再取这个号。所以第二只兔子的取值数共有
//m2−1种。这时共有m1 *( m2 - 1 )种取值。
//int main()
//{
//	int n;
//	cin >> n;
//	int m[55] = { 0 };
//
//	long long/**/ i, sum = 1;
//	for (i = 0; i < n; i++)
//	{
//		cin >> m[i];
//	}
//
//	sort(m, m + n);/*一定要排序*/
//	for (i = 0; i < n; i++)
//	{
//		m[i] -= i;/**/
//		sum *= m[i];/*是乘，不是加*/
//
//		sum %= 1000000000 + 7;/*边除边模，否则ll都爆掉*/
//		公式：(a * b) % c = ((a % c) * ( b % c)) % c
//	}
//	sum %= 1000000000 + 7;
//	cout << sum << endl;
//	return 0;
//}


/*以下两题都是codeforces，讲解视频：https://www.bilibili.com/video/BV19u4y1z7zd/?spm_id_from=333.337.search-card.all.click&vd_source=41fa3a36a9ab4fa3fc7b5ff1c034346c   题*/


//ABBC or BACB
//https://codeforces.com/problemset/problem/1873/G

//思路：必须有A,B才能继续进行
//b会把一段连续的a给吃掉，最终的答案 = min( b的数量 * (连续a的个数的数组  从大到小排列), a的总数量)
int main()
{
	int t;
	cin >> t;

	while (t--)
	{
		//solved();
		string s;
		cin >> s;

		int i, cb = 0/*b的个数*/;
		int ca[100005], n = 0;
		for (i = 0; i < s.size(); i++)
		{
			if (s[i] == 'B')
				cb++;
			else
			{
				int j = i, count = 0;
				while (j < s.size() && s[j] == 'A')
				{
					j++;
					count++;
				}
				if (j >= s.size())
				{
					ca[n++] = count;
					break;
				}
				else
				{
					ca[n++] = count;
					i = j - 1;
				}
			}
		}

		if (cb == 0 || cb == s.size())
		{
			cout << 0 << endl;
		}
		else
		{
			sort(ca, ca + n);
			int j = n - 1, sum = 0;
			for (i = 0; i < cb; i++)
			{
				sum += ca[j--];
				if (j == -1)
					break;
			}
			cout << sum << endl;
		}
	}
	return 0;
}


////Building an Aquarium
////https://codeforces.com/contest/1873/problem/E
//
////因为h增大----->可装的水量增大：x增大------>有单调性----->二分
//
//const int N = 2e5 + 5;
//int n, x;
//int a[N];
//
//int check(int mid)
//{
//	int i;
//	long long sum = 0;
//	for (i = 0; i < n; i++)
//	{
//		if (mid > a[i])
//			sum += mid - a[i];
//	}
//	return sum <= x;
//}
//
//int main()
//{
//	int t;
//	cin >> t;
//	while (t--)
//	{
//		cin >> n >> x;
//		int i;
//		for (i = 0; i < n; i++)
//		{
//			cin >> a[i];
//		}
//
//		long long l = 0, r = 2e9 + 5;//1e9过不了，2e9过了：当n等于1，a[1]=1e9,加的水为1e9，最高就是2e9
//
//		long long ans = -1;
//		while (l <= r)
//		{
//			int mid = (l + r) / 2;
//			if (check(mid))//s[mid] <= x
//			{
//				l = mid + 1;
//				ans = mid;
//			}
//			else
//			{
//				r = mid - 1;
//			}
//		}
//		cout << ans << endl;
//	}
//	return 0;
//}